// “传统的 JavaScript 类”Vehicle 
function Vehicle() { 
    this.engines = 1; 
   } 
   Vehicle.prototype.ignition = function() { 
    console.log( "Turning on my engine." ); 
   };
   Vehicle.prototype.drive = function() { 
    this.ignition(); 
    console.log( "Steering and moving forward!" ); 
   }; 
   // “寄生类” Car 
   function Car() { 
    // 首先，car 是一个 Vehicle 
    var car = new Vehicle(); 
    // 接着我们对 car 进行定制
    car.wheels = 4; 
    // 保存到 Vehicle::drive() 的特殊引用
    var vehDrive = car.drive; 
    // 重写 Vehicle::drive() 
    car.drive = function() { 
    vehDrive.call( this ); 
    console.log( 
    "Rolling on all " + this.wheels + " wheels!" 
    ); 
    } 
    return car; 
   } 
   var myCar =new Car(); // var myCar=new Car() 
   /*调用 new Car() 时会创建一个新对象并绑定到 Car 的 this 上（参见第 2
章）。但是因为我们没有使用这个对象而是返回了我们自己的 car 对象，所
以最初被创建的这个对象会被丢弃，因此可以不使用 new 关键字调用 Car()。*/
   myCar.drive();
   /*复制一份 Vehicle 父类（对象）的定义，然后混入子类（对象）的定
义（如果需要的话保留到父类的特殊引用），然后用这个复合对象构建实例*/